package commandmode.impl;

import commandmode.base.BaseCommand;
import commandmode.entity.Light;

/**
 * 实现打开电灯的命令
 * 这是一个命令 所以需要实现命令接口
 * @author yaojianfeng
 */
public class LightOnCommandImpl implements BaseCommand {
   private Light light;

    /**
     * 构造器被传入了某个电灯 以便让这个命令控制,然后记录在实例变量中,
     * 一旦调用execute()就由这个电灯对象成为接收者 负责接受请求
     * @param light
     */
    public LightOnCommandImpl(Light light) {
        this.light = light;
    }

    /**
     * 这个execute()方法调用接受对象的on()方法
     */
    @Override
    public void execute() {
        light.on();
    }

    /**
     * 撤销功能
     * 撤销上一步的操作
     */
    @Override
    public void undo() {
        light.off();
    }
}
